package com.kevinkk.tree;

import java.util.*;

/**
 * 给定一个二叉树的 根节点 root，想象自己站在它的右侧，按照从顶部到底部的顺序，返回从右侧所能看到的节点值。
 */

public class BinaryTreeRightSideView {
    class Solution {
        public List<Integer> rightSideView(TreeNode root) {
            List<Integer> res = new ArrayList<>();
            Deque<TreeNode> que = new ArrayDeque<>();
            if(root != null) que.addLast(root);

            while(!que.isEmpty()){
                int size = que.size();
                for(int i = 0; i < size; i++){
                    TreeNode node = que.removeFirst();
                    if(node.left != null) que.addLast(node.left);
                    if(node.right != null) que.addLast(node.right);
                    if(i == size-1)
                        res.add(node.val);
                }
            }

            return res;
        }
    }
}
